package com.mastercard.assets.web.struts.actions;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.jpa.TblAlerta;
import com.mastercard.assets.jpa.TblFlujo;
import com.mastercard.assets.jpa.TblForma;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.util.to.UserLogin;

public class FlujosIndexIn
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		int role = user.getActualRoleId( ) ;
		
		if( role != 2 )
			return mapping.findForward( "RoleInvalid" ) ;
		
		// sube las formas
		List< TblForma > formas = MasterCardDAO.getAllActiveFormas( ) ;
		
		List< TblForma > formasRes = new ArrayList< TblForma >( ) ;
		
		for( TblForma f : formas )
			if( f.getStatus( ) == 1 )
				formasRes.add( f ) ;
				
                for( TblForma f : formasRes ) {
                    f.setDescripcion( quitaCaracter( f.getDescripcion( ) ) ) ;
                    f.setNombre( quitaCaracter( f.getNombre( ) ) ) ;
                }
                
                // las sube al request
		request.setAttribute( "Formas" , formasRes ) ;
		
		
		// sube las alertas
		List< TblAlerta > alertas = MasterCardDAO.getAllActiveAlertas( ) ;
		
		List< TblAlerta > alertasRes = new ArrayList< TblAlerta >( ) ;
		
		for( TblAlerta f : alertas )
			if( f.getStatus( ) == 1 )
				alertasRes.add( f ) ;
		
                for( TblAlerta f : alertasRes ) {
                    
                    f.setNombre( quitaCaracter( f.getNombre( ) ) ) ;
                    f.setDescripcion( quitaCaracter( f.getDescripcion( ) ) ) ;
                    
                }
		// las sube al request
		request.setAttribute( "Alertas" , alertasRes ) ;
		
		
		// sube las flujos
		List< TblFlujo > flujos = MasterCardDAO.getAllActiveFlujos( ) ;
		
		List< TblFlujo > flujosRes = new ArrayList< TblFlujo >( ) ;
		
		for( TblFlujo f : flujos )
			if( f.getStatus( ) == 1 )
				flujosRes.add( f ) ;
		
                for( TblFlujo f : flujosRes ) {
                    
                    f.setNombre( quitaCaracter( f.getNombre( ) ) ) ;
                    f.setDescripcion( quitaCaracter( f.getDescripcion( ) ) ) ;
                    
                }
		// las sube al request
		request.setAttribute( "Flujos" , flujosRes ) ;
		
                MasterCardDAO.closeEntityManager( ) ;
                if( user.getIdioma( ) == 0 ) {
                    return mapping.findForward( "success" ) ;
                } else 
                    return mapping.findForward( "successEng" ) ;
		
	}
        
        public static String quitaCaracter( String cadena ) {
            
            cadena = cadena.replaceAll("Ã±", "&ntilde;") ;
            cadena = cadena.replaceAll("Ã³", "&oacute;") ;
            cadena = cadena.replaceAll("Ã­", "&iacute;") ;
            cadena = cadena.replaceAll("Ãº", "&uacute;") ;
            cadena = cadena.replaceAll("Ã¡", "&aacute;") ;
            
            return cadena;
        }
	
}
